package com.sg.dto.biz.bff.common;

import com.wicket.okrbff.common.annotations.TreeType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;


/**
 * @desc BffEvaObjTargetCycleWeightDto
 * @使用场景
 */
@Data
public class BffEvaObjTargetCycleWeightDto implements Serializable {

    /**
     * 对象目标周期权重设置ID
     */
    @ApiModelProperty("对象目标周期权重设置ID")
    private String objTargetCycleWeightSetId;

    /**
     * 被评对象目标周期ID
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String evaObjTargetCycleId;

    /**
     * 权重
     */
    @NotNull(message = "权重不能为空")
    @ApiModelProperty("权重")
    private Double weightValue;

    /**
     * 权重分值
     */
    @NotNull(message = "权重分值不能为空")
    @ApiModelProperty("权重分值")
    private Double weightScore;

    /**
     * 是否父周期 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否父周期不能为空")
    @ApiModelProperty("是否父周期")
    private String isParentCycle;

    /**
     * 是否子周期 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否子周期不能为空")
    @ApiModelProperty("是否子周期")
    private String isSubCycle;

    /**
     * 是否中期 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否中期不能为空")
    @ApiModelProperty("是否中期")
    private String isMetaphase;
    /**
     * 目标周期简称
     */
    @ApiModelProperty("目标周期简称")
    private String cyclelAlias;

    /**
     * 周期名称
     */
    @ApiModelProperty("周期名称")
    private String cycleStandardName;

    /**
     * 周期类型实例简称
     */
    @ApiModelProperty("周期类型实例简称")
    private String cycleNumberShortName;

    /**
     * 周期开始时间
     */
    @ApiModelProperty("周期开始时间")
    private Date cycleStartTime;

    /**
     * 周期结束时间
     */
    @ApiModelProperty("周期结束时间")
    private Date cycleEndTime;

    /**
     * 虚拟组织下部门ID
     */
    @ApiModelProperty("虚拟组织下部门ID")
    private String deptId;

    /**
     * 部门简称
     */
    @ApiModelProperty("部门简称")
    private String deptShortName;

    /**
     * 虚拟组织成员就职记录ID
     */
    @ApiModelProperty("虚拟组织成员就职记录ID")
    private String virtualOrgInductionRecordId;

    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;

    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String nickName;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 关联目标内容ID
     */
    @ApiModelProperty("关联目标内容ID")
    private String targetCycleContentId;
    /**
     * 被评对象目标周期标识
     */
    @TreeType("id")
    @ApiModelProperty("被评对象目标周期标识")
    private String evaObjTargetCycleCode;

    /**
     * 目标周期名称
     */
    @ApiModelProperty("目标周期名称")
    private String targetCycleName;

    /**
     * 被评对象内容表主键ID
     */
    @ApiModelProperty("被评对象内容表主键ID")
    private String evaObjEntityId;

    /**
     * 被评对象内容表类型编码 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表
     */
    @ApiModelProperty("被评对象内容表类型编码")
    private String evaObjTableTypeCode;

    /**
     * 被评对象类型编码 EVA_PORTRAIT:评价画像 EVA_OBJECT:评价对象 FLEVEL_OBJ_TASK_DUTY_DEPT:一级部门目标任务责任部门 OKR_SUBJECT_DEPT:OKR责任主体部门 OKR_SUBJECT_PERSONAL:OKR责任主体个人
     */
    @ApiModelProperty("被评对象类型编码")
    private String evaObjTypeCode;

    /**
     * 树类型编码 PLAN_TREE:规划树 EVALUATION_TREE:评价树 DEP_OBJ_MIS_STA:部门目标任务书 DUTY_SUBJECT:OKR责任主体树
     */
    @ApiModelProperty("树类型编码")
    private String treeTypeCode;

    /**
     * 周期ID
     */
    @ApiModelProperty("周期ID")
    private String cycleId;

    /**
     * 冗余目标ID
     */
    @ApiModelProperty("冗余目标ID")
    private String targetId;

    /**
     * 冗余评价模板ID
     */
    @ApiModelProperty("冗余评价模板ID")
    private String evaluationTemplateId;

    /**
     * 上级被评对象目标周期标识
     */
    @TreeType("pid")
    @ApiModelProperty("上级被评对象目标周期标识")
    private String parentEvaObjTargetCycleId;

    /**
     * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
     */
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;

    /**
     * 部门目标责任人就职记录ID
     */
    @ApiModelProperty("部门目标责任人就职记录ID")
    private String personLiableVirtualOrgInductionRecordId;

    /**
     * 部门目标责任人个人账号
     */
    @ApiModelProperty("部门目标责任人个人账号")
    private String personLiableUserId;

    /**
     * 部门目标责任人姓名
     */
    @ApiModelProperty("部门目标责任人姓名")
    private String personLiableIdCardName;

    /**
     * 部门目标责任人昵称
     */
    @ApiModelProperty("部门目标责任人昵称")
    private String personLiableNickName;

    /**
     * 分管领导就职记录ID
     */
    @ApiModelProperty("分管领导就职记录ID")
    private String deptLeaderVirtualOrgInductionRecordId;

    /**
     * 分管领导个人账号
     */
    @ApiModelProperty("分管领导个人账号")
    private String deptLeaderUserId;

    /**
     * 分管领导姓名
     */
    @ApiModelProperty("分管领导姓名")
    private String deptLeaderIdCardName;

    /**
     * 分管领导昵称
     */
    @ApiModelProperty("分管领导昵称")
    private String deptLeaderNickName;
    /**
     * 父子中周期类型 PARENT_CYCLE:父周期 SUB_CYCLE:子周期 MID_CYCLE:中期
     */
    @ApiModelProperty("父子中周期类型")
    private String parentSubMidCycleType;
    /**
     * 真实头像
     */
    @ApiModelProperty("真实头像")
    private String userFace;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffEvaObjTargetCycleWeightDto that = (BffEvaObjTargetCycleWeightDto) o;
        return objTargetCycleWeightSetId == that.objTargetCycleWeightSetId && evaObjTargetCycleId == that.evaObjTargetCycleId && weightValue == that.weightValue && weightScore == that.weightScore && isParentCycle == that.isParentCycle && isSubCycle == that.isSubCycle && isMetaphase == that.isMetaphase && cyclelAlias == that.cyclelAlias && cycleStandardName == that.cycleStandardName && cycleNumberShortName == that.cycleNumberShortName && cycleStartTime == that.cycleStartTime && cycleEndTime == that.cycleEndTime && deptId == that.deptId && deptShortName == that.deptShortName && virtualOrgInductionRecordId == that.virtualOrgInductionRecordId && idCardName == that.idCardName && nickName == that.nickName && subjectLifeCycle == that.subjectLifeCycle && targetCycleContentId == that.targetCycleContentId && evaObjTargetCycleCode == that.evaObjTargetCycleCode && targetCycleName == that.targetCycleName && evaObjEntityId == that.evaObjEntityId && evaObjTableTypeCode == that.evaObjTableTypeCode && evaObjTypeCode == that.evaObjTypeCode && treeTypeCode == that.treeTypeCode && cycleId == that.cycleId && targetId == that.targetId && evaluationTemplateId == that.evaluationTemplateId && parentEvaObjTargetCycleId == that.parentEvaObjTargetCycleId && updateStatus == that.updateStatus && personLiableVirtualOrgInductionRecordId == that.personLiableVirtualOrgInductionRecordId && personLiableUserId == that.personLiableUserId && personLiableIdCardName == that.personLiableIdCardName && personLiableNickName == that.personLiableNickName && deptLeaderVirtualOrgInductionRecordId == that.deptLeaderVirtualOrgInductionRecordId && deptLeaderUserId == that.deptLeaderUserId && deptLeaderIdCardName == that.deptLeaderIdCardName && deptLeaderNickName == that.deptLeaderNickName && parentSubMidCycleType == that.parentSubMidCycleType && userFace == that.userFace;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), objTargetCycleWeightSetId, evaObjTargetCycleId, weightValue, weightScore, isParentCycle, isSubCycle, isMetaphase, cyclelAlias, cycleStandardName, cycleNumberShortName, cycleStartTime, cycleEndTime, deptId, deptShortName, virtualOrgInductionRecordId, idCardName, nickName, subjectLifeCycle, targetCycleContentId, evaObjTargetCycleCode, targetCycleName, evaObjEntityId, evaObjTableTypeCode, evaObjTypeCode, treeTypeCode, cycleId, targetId, evaluationTemplateId, parentEvaObjTargetCycleId, updateStatus, personLiableVirtualOrgInductionRecordId, personLiableUserId, personLiableIdCardName, personLiableNickName, deptLeaderVirtualOrgInductionRecordId, deptLeaderUserId, deptLeaderIdCardName, deptLeaderNickName, parentSubMidCycleType, userFace);
    }


}
   